1. 提交需求
      *
      *

      *
      *
      *
      立即提交
      点击”立即提交”,表明我理解并同意 《黄金城科技隐私条款》

      logo

        产品与服务
        解决方案
        技术支持
        合作发展
        关于黄金城

        申请试用
          php代码审计案例之Bluecms(一)
          发布时间:2023-02-17 阅读次数: 967 次

           前 言

          所谓代码审计是一种以发现程序错误,黄金城官网漏洞和违反程序规范为目标的源代码分析。在黄金城官网领域,为了发现黄金城官网问题,常通过黑盒测试、白盒测试方法来尽可能的发现业务程序中的黄金城官网问题,代码审计就是白盒测试的常用方法,相较于黑盒测试,由于白盒测试能接触到源代码,可以更加详细的理解业务程序逻辑,也能更全面的发现黄金城官网风险。接下来本系列文章将以Bluecms v1.6 作为php代码审计案例为切入点,过程中结合常见源代码扫描工具和动态调试方法,来详细介绍php代码审计的思路,相关源代码网上也都有公开。





           审计环境说明
          环境phpstudy
          Apache 2.4.9
          Mysql 5

          Php 5.6.9





           源代码审计工具扫描结果
          图片
          图片
          图片




           系统入口梳理

          在对一个真实cms进行审计的时候,先整体对网站的目录结构大致做个全局分析,了解每个目录的基本功能以及目录入口文件index.php所在位置。对index.php的分析,个人认为主要是为了了解下面几个问题。

          1.页面路由的流程
          2.系统的认证、鉴权逻辑
          3.初始化的数据过滤方法

          4.数据库的连接方式

          图片

          根据index.php内容,大致可以看到,主要就是获取数据库数据,并在首页展现,这个过程中没有任何的交互判断,只是个静态展现。

          图片
          图片
          图片

          到这里应该就可以知道这个系统前台并没有做统一入口再分发,因此是一个多入口的系统。而多入口系统,一般就会需要通过标准化的函数来对多个入口进行过滤检查鉴权等。查看根目录下的其他文件,基本都引用了同一个文件,即/include/common.inc.php文件,接下来我们来看一下common.inc.php文件

          会话相关配置

          图片

          外部数据过滤,如果没有配置gpc,则通过addslashes函数进行过滤,但这里我们要注意无论是gpc还是addslashes,它都没有对$_SERVER进行过滤,且无法对数字型的注入产生效果,这两个点要注意,是可能存在漏洞的地方。

          图片

          设置时区和获取请求ip

          图片

          配置数据库连接,这里注意是使用mysql直接连接,针对数据库连接类型,我们注意是否数据库内使用gbk编码,如果是,可能存在宽字节注入

          图片
          图片

          而这里正好是gbk编码方式,因此这是一个可能存在漏洞的点,要注意。

          Smarty模版配置

          图片

          用户黑名单排查。注意这里虽然经过了黑名单排查,但其实即使是在黑名单中,后面的程序逻辑也是可以继续走下去的。

          图片

          用户权限校验,若不存在SESSION,则进行COOKIE校验。

          图片

          因此总的来看,这个入口检查文件的主要功能包括有配置phpsession会话、使用gpc/addslashes进行外部数据初始化过滤、设置时区、过滤黑名单IP、初始化数据库连接、Smarty渲染、用户session及cookie的校验。当然这只是前端普通用户的流程。根据目录,我们可以看到存在admin管理员后台。

          图片

          同理,我们也需要了解下admin管理员的index.php和入口文件。来把握住后台的逻辑

          Index.php基本是类似的,渲染首页的页面,同时通过admin/include/common.inc.php进行入口检查

          图片

          接下来看下admin/include/common.inc.php文件,其它方面都是和前台一样的,在鉴权这个地方,它主要对管理员身份进行检查。即如果session为空,则检查cookie,如果不为空,则更新session。

          图片

          到这里我们基本上把bluecms的前后端的入口流程理清,其中涉及到用户鉴权、数据库连接、外部数据过滤、页面渲染展示等。而且从流程看,目前发现外部数据过滤和数据库连接处,存在理论上的黄金城官网风险。想要全面地进行代码审计,这一步是必不可少的,切记。

          以上是本章节的主要介绍内容,后续将继续更新具体漏洞的审计方法,敬请期待。



          免费试用
          服务热线

          马上咨询

          400-811-3777

          回到顶部
          【网站地图】【sitemap】